﻿using ITSM.Model;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace ITSM
{
    public class Image
    {
        /// <summary>
        ///  将echarts返回的base64 转成图片
        /// </summary>
        /// <param name="image">图片的base64形式</param>
        /// <param name="path">存放名称</param>
        public string SaveImage(string image, string path)
        {
            string url = AppHelper.ReadAppSettings("imageUrl");
            string name = AppHelper.ReadAppSettings("imageUrlName");
            url += path;
            name += path;
            try
            {
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
                string filepath = Path.GetDirectoryName(url);
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
                // 如果不存在就创建file文件夹
                if (!Directory.Exists(filepath))
                {
                    if (filepath != null) Directory.CreateDirectory(filepath);
                }
                var match = Regex.Match(image, "data:image/(jpeg|png|jpg);base64,([\\w\\W]*)$");
                if (match.Success)
                {
                    image = match.Groups[2].Value;
                }
                var photoBytes = Convert.FromBase64String(image);
                System.IO.File.WriteAllBytes(url, photoBytes);
                return name;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return "";
                throw;
            }
        }

        public string SaveImageBlob(IFormFile file,string imageName)
        {
            try
            {
                string url = AppHelper.ReadAppSettings("imageUrl");
                string name = AppHelper.ReadAppSettings("imageUrlName");
                string path = imageName+".jpeg"; // 获取文件名
                url += path;
                name += path;
#pragma warning disable CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
                string filepath = Path.GetDirectoryName(url);
#pragma warning restore CS8600 // 将 null 字面量或可能为 null 的值转换为非 null 类型。
                if (Directory.Exists(filepath) == false)//如果不存在就创建file文件夹
                {
#pragma warning disable CS8604 // 引用类型参数可能为 null。
                    Directory.CreateDirectory(filepath);
#pragma warning restore CS8604 // 引用类型参数可能为 null。
                }
                StreamReader reader = new StreamReader(file.OpenReadStream());
                string content = reader.ReadToEnd();

                using (FileStream fs = File.Create(url))
                {
                    // 复制文件
                    file.CopyTo(fs);
                    // 清空缓冲区数据
                    fs.Flush();
                }
                return name;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                throw;
            }
        }
    }
}
